package com.carlinfo.stu_ques.demo.dao.impl;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

import com.carlinfo.stu_ques.common.dao.impl.BaseDaoImpl;
import com.carlinfo.stu_ques.common.util.FileUtil;
import com.carlinfo.stu_ques.demo.dao.IDynastyDao;
import com.carlinfo.stu_ques.demo.pojo.Dynasty;

/**
 * Dao的实现类,实现接口,就要实现接口中所有的方法
 * 
 */
public class DynastyDaoImpl extends BaseDaoImpl<Dynasty> implements IDynastyDao
{
	/* 主键不能重复 */
	// private static int id;
	/*
	 * 找一个容器;放的是朝代,实现CRUD Map:通过键快速找到值 键是id(唯一标识),值:POJO;
	 * 
	 */
	// private Map<Integer, Dynasty> dynastyMap = new TreeMap<Integer, Dynasty>();
	// private FileUtil fileUtil = new FileUtil();
	private File dynastyFile = new File(this.parentFile, "dynasty.dat");

	public DynastyDaoImpl()
	{
		/*
		 * try { FileInputStream fis = new FileInputStream(this.dynastyFile); Object obj
		 * = this.fileUtil.readObject(fis); if (obj != null) { List<Object> dataList =
		 * (List<Object>) obj; // List<Object> dataList = (List<Object>) obj ;
		 * this.dynastyMap = (Map<Integer, Dynasty>) dataList.get(0); this.id = (int)
		 * dataList.get(1); } } catch (FileNotFoundException e) {
		 * System.out.println("==文件不存在,您是第一次运行=="); }
		 */

		/* 读取文件内容 */
		readFile(dynastyFile);
	}

	/**
	 * id自加,这个id自加,只需要自己使用
	 *
	 */
	/*
	 * private void idCount() { id++; }
	 */

	@Override
	public int saveOneDao(Dynasty dynasty)
	{
		// this.idCount();
		dynasty.setId(id);
		// this.dynastyMap.put(dynasty.getId(), dynasty);
		this.tempId = dynasty.getId();
		int resultId = super.saveOneDao(dynasty);
		writeFile(dynastyFile);
		return resultId;
	}
	/* 将Map中的内容写到文件中 */

	// public void writeFile()
	// {
	// try
	// {
	// if (!dynastyFile.getParentFile().exists())
	// {
	// dynastyFile.getParentFile().mkdirs();
	// }
	// /* 准备一根管子,插到文件上 */
	// FileOutputStream fos = new FileOutputStream(dynastyFile);
	// List<Object> dataList = new ArrayList<Object>();
	// dataList.add(this.dynastyMap);
	// dataList.add(this.id);
	// if (!this.fileUtil.writeObject(fos, dataList))
	// {
	// System.out.println("==我存储失败了==");
	// }
	// } catch (FileNotFoundException e)
	// {
	// e.printStackTrace();
	// }
	// }

	@Override
	public void updateOneDao(Dynasty dynasty)
	{
		/* 如何换掉 Map如何更新 */
		// this.dynastyMap.put(dynasty.getId(), dynasty);
		this.tempId = dynasty.getId();

		super.updateOneDao(dynasty);
		writeFile(dynastyFile);
	}
	@Override
	public void deleteOneDao(Dynasty dynasty)
	{
		/* 删除 */
		// this.dynastyMap.remove(dynasty.getId());
		this.tempId = dynasty.getId();

		super.deleteOneDao(dynasty);
		// writeFile();
		writeFile(dynastyFile);

	}

	// @Override
	// public List<Dynasty> selectListDao()
	// {
	// List<Dynasty> list = new ArrayList<Dynasty>();
	// Set<Entry<Integer, Dynasty>> entrySet = this.dynastyMap.entrySet();
	// for (Iterator iterator = entrySet.iterator(); iterator.hasNext();)
	// {
	// Entry<Integer, Dynasty> entry = (Entry<Integer, Dynasty>) iterator.next();
	// int key = entry.getKey();
	// Dynasty dynasty = entry.getValue();
	// list.add(dynasty);
	// }
	// return list;
	// }
	//
	// @Override
	// public Dynasty selectOneDao(Map<String, Object> condMap)
	// {
	// if (condMap.get("id") != null)
	// {
	// Integer id = (Integer) condMap.get("id");
	// return this.dynastyMap.get(id);
	// }
	// return null;
	// }

}
